﻿//
//
/////////////////////////////////////////////////////////////////////////////

/////////////////////////////////////////////////////////////////////////////
namespace ThinMediaLibrary
{
    /////////////////////////////////////////////////////////////////////////
    public class Singleton<TSigletonType> where TSigletonType : class, new()
    {
        /////////////////////////////////////////////////////////////////////
        protected Singleton()
        {

        }

        /////////////////////////////////////////////////////////////////////
        public static TSigletonType Instance
        {
            get { return Creator.Instance; }
        }

        /////////////////////////////////////////////////////////////////////
        private class Creator
        {
            private static TSigletonType _instance;                                         
            public static TSigletonType Instance
            {
                get { return _instance ?? (_instance = new TSigletonType()); }
            }
        }
    }
/////////////////////////////////////////////////////////////////////////////
}//ThinMediaLibrary
